Skip to main content

Pointer: SUPER

Der Pointer SUPER ist eine spezielle Variable für die objektorientierten Programmierung.

SUPER ist der Pointer eines Funktionsbausteins auf die Basisfunktionsbaustein-Instanz, aus die der Funktionsbaustein erzeugt wurde. Der SUPER-Pointer erlaubt somit auch den Zugriff auf die Implementierung der Methoden des Basis-Funktionsbausteins (Basisklasse). Für jeden Funktionsbaustein steht automatisch ein SUPER-Pointer zur Verfügung. Sie können SUPER nur in Methoden- und in den zugehörigen Funktionsbaustein-Implementierungen verwenden.

Dereferenzierung des Pointers: SUPER^

Verwendung des SUPER-Pointers: Mit Hilfe des Schlüsselworts SUPER rufen Sie eine Methode auf, die in der Instanz der Basisklasse oder Elternklasse gültig ist.

Beispiel 98. Beispiel

ST

SUPER^.METH_DoIt();

FUP/CFC/LD

_cds_img_pointer_super_fbd.png


Beispiel 99. Beispiel

Verwendung von SUPER- und THIS-Pointer

FUNCTION_BLOCK FB_Base
VAR_OUTPUT
        iCnt : INT;
END_VAR

METHOD METH_DoIt : BOOL
iCnt := -1;

METHOD METH_DoAlso : BOOL
METH_DoAlso := TRUE;

FUNCTION_BLOCK FB_1 EXTENDS FB_Base
VAR_OUTPUT
        iBase : INT;
END_VAR

THIS^.METH_DoIt();  //Call of the methods of FB_1
THIS^.METH_DoAlso();

SUPER^.METH_DoIt();   //Call of the methods of FB_Base
SUPER^.METH_DoAlso();
iBase := SUPER^.iCnt;

METHOD METH_DoIt : BOOL
iCnt := 1111;
METH_DoIt := TRUE;

PROGRAM PLC_PRG
VAR
    myBase : FB_Base;
    myFB_1 : FB_1;
    iTHIS : INT;
    iBase : INT;
END_VAR
myBase();
iBase := myBase.iCnt;
myFB_1();
iTHIS := myFB_1.iCnt;


Tipp

THIS ist für die Anweisungsliste (AWL) noch nicht implementiert.